#ifndef DATA_CAST_HPP
#define DATA_CAST_HPP

#include "utils/safe_value.hpp"

/**
 * @brief 检查 t1类型 是否可以转换为 t2类型，不要求精度不损失
 * 
 * @param t1 
 * @param t2 
 * @return true 可以转换
 * @return false 不可以转换
 */
bool can_cast(value_type t1, value_type t2);

/**
 * @brief 执行转换
 * 
 * @param src_v 源数据指针
 * @param src_t 源数据类型
 * @param dst_v 目标数据指针（输出结果）
 * @param dst_t 目标数据类型
 */
void do_cast(const void *src_v, value_type src_t, void *dst_v, value_type dst_t);

#endif /* DATA_CAST_HPP */
